/* eslint-disable no-undef */
/**
 * 增加前导零
 *  @param {Number/String} m
 */
export function formatNumber(m) {
    const n = m.toString()

    return n[1] ? n : '0' + n
}

/**
 * 时间格式转化
 * @param {Number} date
 * @return YYYY.MM.DD hh:mm
 */
export function formatTime(date) {
    // let parseDate = date instanceof Date ? date : new Date(date);

    const year = parseDate.getFullYear()
    const month = parseDate.getMonth() + 1
    const day = parseDate.getDate()
    const hour = parseDate.getHours()
    const minute = parseDate.getMinutes()

    return (
        [year, month, day].map(formatNumber).join('.') +
        ' ' +
        [hour, minute].map(formatNumber).join(':')
    )
}

/**
 * 时间格式转化
 * @param {Number} date
 * @return YYYY.MM.DD
 */
export function formatDay(date) {
    const parseDate = new Date(date * 1000)

    const year = parseDate.getFullYear()
    const month = parseDate.getMonth() + 1
    const day = parseDate.getDate()

    return [year, month, day].map(formatNumber).join('.')
}

/**
 * 时间格式转化
 * @param {Number} date
 * @return M月D月H时
 */
export function formatDayWithUnit(date) {
    const parseDate = new Date(date * 1000)
    const month = parseDate.getMonth() + 1
    const day = parseDate.getDate()
    const hour = parseDate.getHours()

    return month + '月' + day + '日' + hour + '时'
}

/**
 * 时间格式转化
 * @param {Number} time
 * @return 当天：hh:ss；一周内：d天前；一周前：Y.M.DD
 */
export function timeAgo(time) {
    const between = Date.now() / 1000 - Number(time)
    const date = new Date(Number(time) * 1000)
    const Y = date.getFullYear() + '.'
    const M =
        (date.getMonth() + 1 < 10
            ? '0' + (date.getMonth() + 1)
            : date.getMonth() + 1) + '.'
    const D = date.getDate() + ' '
    const h = date.getHours() + ':'
    const m = date.getMinutes()

    if (between < 86400) {
        // 当天
        return formatNumber(h) + formatNumber(m)
    } else if (between < 604800) {
        // eslint-disable-next-line no-bitwise
        const days = ~~(between / 86400)

        return days + '天前'
    } else {
        return Y + M + formatNumber(D)
    }
}

/**
 * 保留两位小数
 * @param {Number} num
 */
export function formatToFixed(num) {
    return Number(num).toFixed(2)
}

export function dateFormat(dateTmp, fmtTmp) {
    if (!dateTmp) {
        return '--'
    }
    let fmt = fmtTmp
    let date = dateTmp

    if (!fmt) {
        fmt = 'yyyy.MM.dd'
    }
    if (!(date instanceof Date)) {
        date = new Date(date)
    }
    const o = {
        'M+': date.getMonth() + 1, // 月份
        'd+': date.getDate(), // 日
        'h+': date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 小时
        'H+': date.getHours(), // 小时
        'm+': date.getMinutes(), // 分
        's+': date.getSeconds(), // 秒
        'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
        S: date.getMilliseconds() // 毫秒
    }
    const week = {
        '0': '日',
        '1': '一',
        '2': '二',
        '3': '三',
        '4': '四',
        '5': '五',
        '6': '六'
    }

    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(
            RegExp.$1,
            (date.getFullYear() + '').substr(4 - RegExp.$1.length)
        )
    }
    if (/(E+)/.test(fmt)) {
        fmt = fmt.replace(
            RegExp.$1,
            (RegExp.$1.length > 1
                ? RegExp.$1.length > 2
                    ? '星期'
                    : '周'
                : '') + week[date.getDay() + '']
        )
    }
    for (const k in o) {
        if (new RegExp('(' + k + ')').test(fmt)) {
            fmt = fmt.replace(
                RegExp.$1,
                RegExp.$1.length == 1
                    ? o[k]
                    : ('00' + o[k]).substr(('' + o[k]).length)
            )
        }
    }
    return fmt
}

/**
 * 时间戳格式化(创建时间倒序排列；当天用时分，当周用几天前，其他用年月日)
 * @param Object
 * @return Boolean
 */
export function formatDateMinus(time, systime) {
    const nowDate = new Date(systime * 1000)

    nowDate.setHours(23)
    nowDate.setMinutes(59)
    nowDate.setSeconds(59)
    const day = nowDate.getDay()
    const dayMinus = parseInt(
        (Date.parse(nowDate) / 1000 - time) / (60 * 60 * 24)
    )

    if (dayMinus == 0) {
        return dateFormat(time * 1000, 'HH:mm')
    } else if (dayMinus == 1) {
        return '昨天'
    } else if (dayMinus < 7 && (day - dayMinus > 0 || day == 0)) {
        return dayMinus + '天前'
    } else {
        return dateFormat(time * 1000)
    }
}
// 检测当前环境为测试还是线上
export function checkProduct() {
    if (!process.server) {
        return (
            location.href.indexOf('zsdx.cn') > 0 &&
            location.href.indexOf('zsdx.cn') <= 13
        )
    }
}
// export default {
//     formatNumber: formatNumber,
//     formatTime: formatTime,
//     formatDay: formatDay,
//     formatDayWithUnit: formatDayWithUnit,
//     timeAgo: timeAgo,
//     formatToFixed: formatToFixed,
//     dateFormat: dateFormat
// };
